#include<iostream>
#include<string.h>
#include<math.h>
int n,plus=1e7;
int main(){
	std::cin>>n; 
	int grp[n+1],mark[n+1];
	memset(mark,0,sizeof(mark));
	for(int i=1;i<n+1;i++) std::cin>>grp[i];
	for(int i=1;i<n+1;i++){
		int num=i,add=0;
		while(grp[num]!=num && mark[num]!=-1){
			mark[num]=-1;
			if(num>i && grp[num]==grp[1]) continue;
			num=grp[num]; add++;
			if(grp[num]==grp[i]){
				plus=std::min(add,plus);
			}
		}
	}
	std::cout<<plus;
	return 0;
}
